#include<iostream>
using namespace std;

const int N=1000;
int l[N];
 
void maxMin(int i,int j,int &maxi,int &mini)
{
    int min1 , max1;
    if(i == j) maxi = mini = l[i];    //表中只有一个元素时
    else if(i == j-1)           //表中有两个元素时
        {
            maxi = max(l[i],l[j]);
            mini = min(l[i],l[j]);
        }
    else                      //表中多于两个元素时
    {
        int m = (i + j) / 2;        //对半分割
        maxMin(i, m, maxi, mini);  //求前部分子表中的最大、最小值
        maxMin(m+1, j, max1, min1);//求后部分子表中的最大、最小值
        if(maxi < max1) maxi = max1; //两子表最大元的大者为原表最大者
        if(mini > min1) mini = min1; //两子表最小元的小者为原表最小者
    }
}
 
int main()
{
    int n , mini , maxi;
    cin >> n;
    for(int i = 0 ; i < n ; i++)cin >> l[i];
    maxMin(0 , n-1 , maxi , mini);
    cout << "最大元素: " << maxi << endl;
    cout << "最小元素: " << mini << endl;
    return 0;
}
 
